package org.lq.shopping.util;

import java.util.Date;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * QQ邮箱发送工具类
 * @author 61417
 */
public class MailUtil {
	/**
	 * 发送邮件(只含内容和主题，不含图片或附件)
	 * @param senderAddress 发件人邮箱地址
	 * @param senderPassword 发件人授权码
	 * @param recipientAddress 接收人邮箱地址
	 * @param subject 邮箱主题
	 * @param content 邮箱内容
	 * @return 
	 */
	public static void sendMail(String senderAddress,String senderPassword,String recipientAddress,String subject,String content) {
		try {
			//连接邮件服务器的参数配置
			Properties props = new Properties();
			//设置用户的认证方式
			props.setProperty("mail.smtp.auth", "true");
			//设置传输协议
			props.setProperty("mail.transport.protocol", "smtp");
			//设置发件人的SMTP服务器地址
			props.setProperty("mail.host", "smtp.qq.com");
			//创建定义整个应用程序所需的环境信息的 Session 对象
			Session session = Session.getInstance(props);
			//设置调试信息在控制台打印出来
			session.setDebug(true);
			//创建一封邮件的实例对象
			MimeMessage msg = new MimeMessage(session);
			//设置发件人地址
			msg.setFrom(new InternetAddress(senderAddress));
			/**
			* 设置收件人地址（可以增加多个收件人、抄送、密送），即下面这一行代码书写多行
			* MimeMessage.RecipientType.TO:发送
			* MimeMessage.RecipientType.CC：抄送
			* MimeMessage.RecipientType.BCC：密送
			*/
			msg.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(recipientAddress));
			//设置邮件主题
			msg.setSubject(subject,"UTF-8");
			    
			//下面是设置邮件正文
			msg.setContent(content, "text/html;charset=UTF-8");
			msg.setSentDate(new Date());
			//创建邮件的实例对象
			Message m = msg;
			//根据session对象获取邮件传输对象Transport
			Transport transport = session.getTransport();
			//设置发件人的账户名和密码
			transport.connect(senderAddress, senderPassword);
			//发送邮件，并发送到所有收件人地址，message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
			transport.sendMessage(m,m.getAllRecipients());
			  
			//5、关闭邮件连接
			transport.close();
		} catch (NoSuchProviderException e) {
			e.printStackTrace();
		} catch (MessagingException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
